/*
 * Funambol is a mobile platform developed by Funambol, Inc.
 * Copyright (C) 2008 Funambol, Inc.
 *
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Affero General Public License version 3 as published by
 * the Free Software Foundation with the addition of the following permission
 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
 * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE
 * WARRANTY OF NON INFRINGEMENT  OF THIRD PARTY RIGHTS.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program; if not, see http://www.gnu.org/licenses or write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301 USA.
 *
 * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite
 * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com.
 *
 * The interactive user interfaces in modified source and object code versions
 * of this program must display Appropriate Legal Notices, as required under
 * Section 5 of the GNU Affero General Public License version 3.
 *
 * In accordance with Section 7(b) of the GNU Affero General Public License
 * version 3, these Appropriate Legal Notices must retain the display of the
 * "Powered by Funambol" logo. If the display of the logo is not reasonably
 * feasible for technical reasons, the Appropriate Legal Notices must display
 * the words "Powered by Funambol".
 */


#import <UIKit/UIKit.h>


#import "common.h"
#import "LogLevelView.h"
#import "base/Log.h"
#import "UIController.h"
#import "FunambolAPI.h"

@implementation LogLevelView

- (id)init {
	self = [super init];
	if (self)
	{
		// this title will appear in the navigation bar
		self.title = NSLocalizedString(@"LogLevel",@"LogLevel") ;
	}
	return self;
}

- (void) loadView{
    UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
	self.view = contentView;    
  
    errorCell   =   [[UITableViewCell alloc]init];
    [[errorCell textLabel] setText:NSLocalizedString(@"Error",@"Error")];
    infoCell    =   [[UITableViewCell alloc]init];
    [[infoCell textLabel] setText:NSLocalizedString(@"Info",@"Info")];
    debugCell   =   [[UITableViewCell alloc]init];
    [[debugCell textLabel] setText:NSLocalizedString(@"Debug",@"Debug")];
    
    logTable = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped]; 
	logTable.delegate = self;
    logTable.dataSource = self;
	logTable.rowHeight = 40;
    [logTable reloadData];
    
    [self.view addSubview:logTable];
    
}

//TABLE VIEW

- (void)viewWillAppear:(BOOL)animated
{
	// this UIViewController is about to re-appear, make sure we remove the current selection in our table view
	NSIndexPath *tableSelection = [logTable indexPathForSelectedRow];
	[logTable deselectRowAtIndexPath:tableSelection animated:NO];
}

- (void)tableView:(UITableView *)settingsTable didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
 switch (indexPath.row) {
     case 0:
         [self errorAction:nil];
         break;
     case 1:
         [self infoAction:nil];
         break;
     case 2:
         [self debugAction:nil];
         break;
     default:
         break;
 }   
}

- (UITableViewCellAccessoryType)tableView:(UITableView *)logTable accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath
{
    int loglevelValue = [[FunambolAPI getInstance] getLogLevel];
    switch (indexPath.row) {
        case 0:
            if (loglevelValue == 0 ){
                return UITableViewCellAccessoryCheckmark;
            }else{
                return UITableViewCellAccessoryNone;
            }
		case 1:
            if (loglevelValue == 1 ){
                return UITableViewCellAccessoryCheckmark;
            }else{
                return UITableViewCellAccessoryNone;
            }
        case 2:
            if (loglevelValue == 2 ){
                return UITableViewCellAccessoryCheckmark;
            }else{
                return UITableViewCellAccessoryNone;
            }
            
        default:
            break;
    }
    return UITableViewCellAccessoryNone;
}

- (UITableViewCell *)tableView:(UITableView *)logTable cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	
        switch (indexPath.section) {
                //account table section
            case 0:
                switch (indexPath.row) {
                    case 0:
                        return errorCell;
                    case 1:
                        return infoCell;
                    case 2:
                        return debugCell;
                    default:
                        break;
                }
            default:
                break;
        }
    return nil;
}

- (NSInteger)tableView:(UITableView *)logTable numberOfRowsInSection:(NSInteger)section {

    return 3;
}



- (NSInteger)numberOfSectionsInTableView:(UITableView *)logTable {
    return 1;
}

- (void)reload {
    [self init];
}

- (void)backAction:(id)sender
{
}


- (void)errorAction:(id)sender
{
    [errorCell setAccessoryType:UITableViewCellAccessoryCheckmark];
    [infoCell setAccessoryType:UITableViewCellAccessoryNone];
    [debugCell setAccessoryType:UITableViewCellAccessoryNone];
	[[FunambolAPI getInstance] setLogLevel:0];
    
}

- (void)infoAction:(id)sender
{
    
    [errorCell setAccessoryType:UITableViewCellAccessoryNone];
    [infoCell  setAccessoryType:UITableViewCellAccessoryCheckmark];
    [debugCell setAccessoryType:UITableViewCellAccessoryNone];
	[[FunambolAPI getInstance] setLogLevel:1];
}

- (void)debugAction:(id)sender
{
    
    [errorCell setAccessoryType:UITableViewCellAccessoryNone];
    [infoCell setAccessoryType:UITableViewCellAccessoryNone];
    [debugCell  setAccessoryType:UITableViewCellAccessoryCheckmark];
    [[FunambolAPI getInstance] setLogLevel:2];
}

- (void) dealloc{
    [logTable release];
    
    [infoCell release];
    [debugCell release];
    [errorCell release];
    [super dealloc]; 
}
@end
